package com.tanhua.dubbo.server.api;

import com.tanhua.dubbo.server.pojo.Comment;
import com.tanhua.dubbo.server.pojo.Publish;
import com.tanhua.dubbo.server.vo.PageInfo;

public interface QuanZiApi {
    /**
     * 查询好友动态
     *
     * @param userId   用户id
     * @param page     当前页数
     * @param pageSize 每一页查询的数据条数
     * @return
     */
    PageInfo<Publish> queryPublishList(Long userId, Integer page, Integer pageSize);

    /**
     * 发布朋友圈
     *
     * @param publish publish对象
     * @return 朋友圈id
     */
    String savePublish(Publish publish);

    /**
     * 查看推荐的圈子列表
     *
     * @param userId   用户id
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Publish> queryRecommendPublishList(Long userId, Integer page, Integer pageSize);

    /**
     * 给圈子点赞
     *
     * @param userId    用户id
     * @param publishId 圈子id
     * @return 是否点赞成功
     */
    Boolean likeComment(Long userId, String publishId);

    /**
     * 查询用户是否已经点赞过动态
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean queryUserIsLike(Long userId, String publishId);

    /**
     * 查询点赞数
     *
     * @param publishId
     * @return
     */
    Integer queryCommentLikeCount(String publishId);

    /**
     * 给圈子取消点赞
     *
     * @param userId    用户id
     * @param publishId 圈子id
     * @return 是否取消点赞成功
     */
    Boolean disLikeComment(Long userId, String publishId);

    /**
     * 喜欢
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean loveComment(Long userId, String publishId);

    /**
     * 取消喜欢
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean disLoveComment(Long userId, String publishId);

    /**
     * 查询喜欢数
     *
     * @param publishId
     * @return
     */
    Long queryLoveCount(String publishId);

    /**
     * 查询⽤户是否喜欢该动态
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean queryUserIsLoveComment(Long userId, String publishId);

    /**
     * 根据id查询publish
     *
     * @param publishId
     * @return
     */
    Publish queryPublishById(String publishId);

    /**
     * 保存评论
     *
     * @param userId
     * @param publishId
     * @param content
     * @return
     */
    Boolean saveComment(Long userId, String publishId, String content);

    /**
     * 查询评论列表
     * @param publishId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> listCommentByPublishId(String publishId, Integer page, Integer pageSize);
}
